package classTest.HomeWorkday04;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;

/**
 * 用户登录功能
 * 程序启动后，要求用户输入用户名和密码
 * 然后去user.dat文件中比对
 * 成功则输出:登录成功
 * 失败则输出:登录失败，用户名或密码不正确
 *
 * 登录失败的条件:用户名输入正确但是密码不正确，或者用户名
 * 输入不正确(user.dat文件中没有此人)
 *
 * @author Xiloer
 *
 */
public class Test03 {
    public static void main(String[] args) throws IOException {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入用户名");
        String username=scanner.nextLine();
        System.out.println("请输入密码");
        String password=scanner.nextLine();
        RandomAccessFile raf =new RandomAccessFile("user.txt","rw");
        boolean login=false;//标记是否登陆成功，默认是登陆失败的
        for (int i = 0; i <raf.length()/100 ; i++) {
            //将指针移动到用户名的位置
            raf.seek(i*100);
            //读取用户名
            byte[]data=new byte[32];
            raf.read(data);
            String name=new String(data,"UTF-8").trim();
            if (name.equals(username)){//是否为该用户
                //读取密码
//                raf.seek(i*100+32);//不必移动指针，因为读取用户名后指针就在密码位置
                raf.read(data);//再读32字节，将密码读入数组
                String ped=new String(data,"UTF-8").trim();
                if (ped.equals(password)){
                    //登录成功
                    login=true;
                }
                break;//只要找到该用户，无论登录是否成功，都不再继续读取后续数据
            }

        }
        if (login) {
            System.out.println("登录成功，欢迎回来!");
        }else{
            System.out.println("登录失败，用户名或密码不正确!");
        }


        raf.close();
    }
}
